import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

//实现一个固定线程个数的线程池
class MyThreadPool{
    private BlockingQueue<Runnable> queue=null;
    public  MyThreadPool(int n){
        //初始化
        //使用ArrayBlockingQueue作为任务队列,容量为1000
        queue=new ArrayBlockingQueue<>(1000);

        //创建n个线程
        for (int i = 0; i <n ; i++) {
            Thread t=new Thread(()->{
               try{
                   while(true){
                       Runnable task=queue.take();
                       task.run();
                   }
               }catch (InterruptedException e){
                   e.printStackTrace();
               }
            });

            t.start();
        }

    }


    public void submit(Runnable task) throws InterruptedException {
        queue.put(task);
    }
}


public class Demo1 {
    public static void main(String[] args) throws InterruptedException {
        MyThreadPool pool=new MyThreadPool(10);
        for (int i = 0; i <100 ; i++) {
            int id=i;
            pool.submit(()->{
                System.out.println(Thread.currentThread().getName()+" id "+id);
            });
        }
    }
}
